developing a hash function